import Queue from '../queue/Queue'
import { QueueConfig } from './index';

export interface BaseQueueConfig {
  type?: string, // 类型
  target?: any, // 抓取类的实例对象
  method?: string, // decorator挂载的方法
  running: boolean, // 系统启动后该队列是否处于工作状态
  parallel: number, // 任务并行数配置
  description: string // 任务描述
}

export interface FromQueueConfig extends BaseQueueConfig{
  name: string // 从该队列获取任务执行, onStartQueu
}

export interface OnStartQueueConfig extends BaseQueueConfig{
  url: string | string[] // 要抓取链接
}

export type QueueConfig = FromQueueConfig | OnStartQueueConfig

export interface QueueInfo {
  queue: Queue,
  queueConfig?: QueueConfig, // 队列配置
  curParallel?: number, // 当前并行执行的job数量
  maxParallel?: number, // 该任务做多并行执行的job数
  successJobsSize?: number, // 成功数量
  failJobsSize?: number // 失败数量
}
export interface QueueInfos {
  [queueName: string]: QueueInfo
}

export interface AddToQueueConfig {
  name: string // 添加到哪个队列
}

export interface JobsConfig {
  queueName: string //队列名称
  urls: string[] // 加入队列的urls
}

export interface ClientRequest {
  id: string
  key: string
  data: any
}

export interface AppInfo {
  workspace: string,
  webUiPort?: 3000 | number
}
